package com.ybt.heartratem.logic.data.http;


import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
import com.ybt.heartratem.BuildConfig;
import com.ybt.heartratem.common.entity.ClassInfo;
import com.ybt.heartratem.common.entity.StudentInfo;
import com.ybt.heartratem.common.entity.TeacherInfo;
import com.ybt.heartratem.logic.data.http.service.entry.AASRequestBody;

import java.util.List;

import io.reactivex.Observable;
import me.goldze.mvvmhabit.http.BaseResponse;
import me.goldze.mvvmhabit.http.UploadParam;
import okhttp3.ResponseBody;
import retrofit2.http.Body;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.POST;

/**
 * 用户相关数据接口定义
 * appKey 暂用abcabc
 */
public interface AASDataSource {

    /***
     * 获取班级列表
     * @param SchoolID
     * @return
     */
    Observable<BaseResponse<List<ClassInfo>>> getClassList(String SchoolID);

    /***
     * 获取教工列表
     * @param SchoolID
     * @return
     */
    Observable<BaseResponse<List<TeacherInfo>>> GetEmployeeList(String SchoolID);

    /***
     * 获取学生列表
     * @return
     */
    Observable<BaseResponse<List<StudentInfo>>> getStudentList(String SchoolID, int ClassID);

    /***
     * 获取上传OSS的签名参数
     * @param FileName
     * @return
     */
    Observable<UploadParam> getOssSignData(String FileName);


    /***
     * 根据业务模块编码获取业务列表数据
     * @param schoolID
     * @param ModelType
     * @param PageIndex
     * @param PageSize
     * @return
     */
    Observable<JsonObject> getRecordList(int schoolID, int ModelType, int PageIndex, int PageSize);

    /***
     * 根据业务ID获取业务数据
     * @param ID
     * @return
     */
    Observable<JsonObject> getRecordByID(int ID);

    /***
     * 新增业务数据
     * @param body
     * @return
     */
    Observable<ResponseBody> AddRecord(AASRequestBody body);

    /***
     * 修改业务数据
     * @param body
     * @return
     */
    Observable<ResponseBody> UpdateRecord(AASRequestBody body);

    /***
     * 删除业务数据
     * @param ID
     * @return
     */
    Observable<ResponseBody> DeleteRecord(int ID);

    /***
     * 根据角色类型获取教工列表
     * @param SchoolID
     * @return
     */
    Observable<BaseResponse<List<TeacherInfo>>> GetEmployeeList(String SchoolID, int RoleID);

    /***
     * 获取餐点食谱
     * @param SchoolID
     * @return
     */
    Observable<JsonArray> getFoodBook(String SchoolID, String TypeOf, String DateFrom, String DateTo);

    /***
     * 获取学校信息
     * @param SchoolID
     * @return
     */
    Observable<JsonObject> getSchoolInfo(int SchoolID);


}

